/**
 * @Description PointConstants.java
 * @author xu_cc [18724000100@163.com]
 * @date 创建时间：2017年10月20日 下午5:01:57
 */
package com.solution.admin.point.constants;

/**
 * 积分常量
 * 
 * @author xu_cc
 * @date 创建时间：2017年10月20日 下午5:02:20
 */
public class PointConstants {
	
	
	// 前端 微信端+pc端
	public static final String FRONTEND_VIEW_POINT_LOG = "frontend";
	// 后台
	public static final String BACKEND_VIEW_POINT_LOG = "backtend";
	
	//字典表字段
	public static final String REGISTER_POINT_KEY_TYPE = "registerPoint";

	/**
	 * 是 / 否
	 * 
	 * @author xu_cc
	 * @date 创建时间：2017年11月1日 下午4:26:58
	 */
	public interface IsYesNo {
		/**
		 * 是
		 */
		public static final String YES = "1";
		/**
		 * 否
		 */
		public static final String NO = "0";
	}

	/**
	 * 定时任务开关
	 * 
	 * @author xu_cc
	 * @date 创建时间：2017年11月1日 下午4:26:58
	 */
	public interface TimerSwitch {
		/**
		 * 开启
		 */
		public static final String ON = "on";
		/**
		 * 关闭
		 */
		public static final String OFF = "off";
	}

	/**
	 * 审核状态<br>
	 * 用于：<br>
	 * 1、每月积分调整信息<br>
	 * 
	 * @author xu_cc
	 * @date 创建时间：2017年11月7日 下午5:53:15
	 */
	public interface ApproveStatus {
		/** 待审核 */
		public static final Integer WAIT_APPROVE = 1;
		/** 审核成功、通过 */
		public static final Integer APPROVE_SUCCESS = 2;
		/** 审核失败、驳回 */
		public static final Integer APPROVE_FAILED = 3;
	}

	/**
	 * 积分导入信息使用标识
	 * 
	 * @author xu_cc
	 * @date 创建时间：2017年10月23日 上午10:39:40
	 */
	public enum PointUseFlag {
		/** 未使用 */
		UNUSE(1, "1", "未使用"),
		/** 已使用 */
		USED(0, "0", "已使用");

		private int id;
		private String code;
		private String name;

		private PointUseFlag(int id, String code, String name) {
			this.id = id;
			this.code = code;
			this.name = name;
		}

		/**
		 * @return the id
		 */
		public int getId() {
			return id;
		}

		/**
		 * @return the code
		 */
		public String getCode() {
			return code;
		}

		/**
		 * @return the name
		 */
		public String getName() {
			return name;
		}
	}

	/**
	 * 积分操作日志增加标识
	 * 
	 * @author xu_cc
	 * @date 创建时间：2017年10月23日 上午10:39:40
	 */
	public enum PointOperateFlag {
		/** 加 */
		FLAG_ADD(1, "1", "加"),
		/** 减 */
		FLAG_MINUS(0, "0", "减");

		private int id;
		private String code;
		private String name;

		private PointOperateFlag(int id, String code, String name) {
			this.id = id;
			this.code = code;
			this.name = name;
		}

		/**
		 * @return the id
		 */
		public int getId() {
			return id;
		}

		/**
		 * @return the code
		 */
		public String getCode() {
			return code;
		}

		/**
		 * @return the name
		 */
		public String getName() {
			return name;
		}
	}

	/**
	 * 积分清零规则类型
	 * 
	 * @author xu_cc
	 * @date 创建时间：2017年10月20日 下午5:22:36
	 */
	public enum PointClearRuleType {
		/** 到期保留近三月积分 */
		RULE_MONTH_THREE(1, "1", "到期保留近三月积分"),
		/** 到期全部保留 */
		RULE_KEEP(2, "2", "到期全部保留"),
		/** 到期全部清零 */
		RULE_CLEAR(3, "3", "到期全部清零");

		private int id;
		private String code;
		private String name;

		private PointClearRuleType(int id, String code, String name) {
			this.id = id;
			this.code = code;
			this.name = name;
		}

		/**
		 * @return the id
		 */
		public int getId() {
			return id;
		}

		/**
		 * @return the code
		 */
		public String getCode() {
			return code;
		}

		/**
		 * @return the name
		 */
		public String getName() {
			return name;
		}
	}

	/**
	 * 积分操作类型（未用到的已标注）
	 * 
	 * @author xu_cc
	 * @date 创建时间：2017年10月20日 下午5:03:05
	 */
	public enum PointOperateType {
		OPT_BUY_GIFT(1, "1", "购买赠送", PointOperateFlag.FLAG_ADD.getId()),
		/** 签到赠送 */
		OPT_SIGN(2, "2", "签到赠送", PointOperateFlag.FLAG_ADD.getId()),
		OPT_PROMOTION_GIFT(20, "20", "活动赠送", PointOperateFlag.FLAG_ADD.getId()),
		/** 人工赠送 */
		OPT_USER_GIFT(3, "3", "人工赠送", PointOperateFlag.FLAG_ADD.getId()),
		/** 购买消费 */
		OPT_BUY(4, "4", "购买消费", PointOperateFlag.FLAG_ADD.getId()),
		/** 人工核减 */
		OPT_USER_MINUS(5, "5", "人工核减", PointOperateFlag.FLAG_MINUS.getId()),
		/** 到期限清零 */
		OPT_EXP_CLEAR(6, "6", "到期限清零", PointOperateFlag.FLAG_MINUS.getId()),
		/** 撤单退回 */
		OPT_CANCAL_ORDER(7, "7", "撤单退回", PointOperateFlag.FLAG_ADD.getId()),
		OPT_AUDIT_RETURN(8, "8", "审核不通过退回", PointOperateFlag.FLAG_ADD.getId()),
		/** 月度订单积分 ,月底到账*/
		OPT_MONTH_ORDER(9, "9", "月度订单积分", PointOperateFlag.FLAG_ADD.getId()),
		OPT_REGISTER(10, "10", "注册赠送", PointOperateFlag.FLAG_ADD.getId()),
		OPT_BIND(11, "11", "绑定号码赠送", PointOperateFlag.FLAG_ADD.getId()),
		OPT_SHARE(12, "12", "分享赠送", PointOperateFlag.FLAG_ADD.getId()),
		OPT_DRAW(13, "13", "抽奖消耗", PointOperateFlag.FLAG_MINUS.getId()),
		OPT_MODIFY(14, "14", "积分变更", PointOperateFlag.FLAG_ADD.getId()),
		OPT_RETURN(15, "15", "退货积分调整", PointOperateFlag.FLAG_ADD.getId()),
		/** 人工赠送(导入) */
		OPT_USER_GIFT_IMPORT(16, "16", "人工赠送(导入)", PointOperateFlag.FLAG_ADD.getId()),
		/** 人工核减(导入) */
		OPT_USER_MINUS_IMPORT(17, "17", "人工核减(导入)", PointOperateFlag.FLAG_MINUS.getId()),
		/** 月度订单积分 */
		OPT_MONTH_ORDER_MINUS(18, "18", "订单积分扣减", PointOperateFlag.FLAG_MINUS.getId()),
		/** 月度订单积分 */
		OPT_MONTH_ORDER_ADD(19, "19", "订单积分增加", PointOperateFlag.FLAG_ADD.getId()),
		OPT_REFERRAL_RETURN(21, "21", "推荐下单返现积分", PointOperateFlag.FLAG_ADD.getId()),
		OPT_INVITE_REGISTER(22, "22", "邀请用户注册", PointOperateFlag.FLAG_ADD.getId());
		
		/**
		 * 根据ID获取增减标识
		 * 
		 * @param id
		 * @return int
		 * @author xu_cc
		 * @throws Exception
		 *             exception
		 * @Date 创建时间：2017年10月24日 下午3:13:51
		 */
		public static int getFlagById(int id) {
			if (id == OPT_BUY_GIFT.getId()) {
				return OPT_BUY_GIFT.getOptFlag();
			} else if (id == OPT_SIGN.getId()) {
				return OPT_SIGN.getOptFlag();
			} else if (id == OPT_USER_GIFT.getId()) {
				return OPT_USER_GIFT.getOptFlag();
			} else if (id == OPT_BUY.getId()) {
				return OPT_BUY.getOptFlag();
			} else if (id == OPT_USER_MINUS.getId()) {
				return OPT_USER_MINUS.getOptFlag();
			} else if (id == OPT_EXP_CLEAR.getId()) {
				return OPT_EXP_CLEAR.getOptFlag();
			} else if (id == OPT_CANCAL_ORDER.getId()) {
				return OPT_CANCAL_ORDER.getOptFlag();
			} else if (id == OPT_AUDIT_RETURN.getId()) {
				return OPT_AUDIT_RETURN.getOptFlag();
			} else if (id == OPT_MONTH_ORDER.getId()) {
				return OPT_MONTH_ORDER.getOptFlag();
			} else if (id == OPT_REGISTER.getId()) {
				return OPT_REGISTER.getOptFlag();
			} else if (id == OPT_BIND.getId()) {
				return OPT_BIND.getOptFlag();
			} else if (id == OPT_SHARE.getId()) {
				return OPT_SHARE.getOptFlag();
			} else if (id == OPT_DRAW.getId()) {
				return OPT_DRAW.getOptFlag();
			} else if (id == OPT_MODIFY.getId()) {
				return OPT_MODIFY.getOptFlag();
			} else if (id == OPT_RETURN.getId()) {
				return OPT_RETURN.getOptFlag();
			} else if (id == OPT_USER_GIFT_IMPORT.getId()) {
				return OPT_USER_GIFT_IMPORT.getOptFlag();
			} else if (id == OPT_USER_MINUS_IMPORT.getId()) {
				return OPT_USER_MINUS_IMPORT.getOptFlag();
			} else if (id == OPT_MONTH_ORDER_MINUS.getId()) {
				return OPT_MONTH_ORDER_MINUS.getOptFlag();
			} else if (id == OPT_MONTH_ORDER_ADD.getId()) {
				return OPT_MONTH_ORDER_ADD.getOptFlag();
			} else if (id == OPT_INVITE_REGISTER.getId()) {
				return OPT_INVITE_REGISTER.getOptFlag();
			} else {
				return -1;
			}
		}

		/**
		 * 根据ID获取操作名称
		 * 
		 * @param id
		 * @return int
		 * @author xu_cc
		 * @throws Exception
		 *             exception
		 * @Date 创建时间：2017年10月26日 下午3:36:25
		 */
		public static String getNameById(int id) {
			if (id == OPT_BUY_GIFT.getId()) {
				return OPT_BUY_GIFT.getName();
			} else if (id == OPT_SIGN.getId()) {
				return OPT_SIGN.getName();
			} else if (id == OPT_USER_GIFT.getId()) {
				return OPT_USER_GIFT.getName();
			} else if (id == OPT_BUY.getId()) {
				return OPT_BUY.getName();
			} else if (id == OPT_USER_MINUS.getId()) {
				return OPT_USER_MINUS.getName();
			} else if (id == OPT_EXP_CLEAR.getId()) {
				return OPT_EXP_CLEAR.getName();
			} else if (id == OPT_CANCAL_ORDER.getId()) {
				return OPT_CANCAL_ORDER.getName();
			} else if (id == OPT_AUDIT_RETURN.getId()) {
				return OPT_AUDIT_RETURN.getName();
			} else if (id == OPT_MONTH_ORDER.getId()) {
				return OPT_MONTH_ORDER.getName();
			} else if (id == OPT_REGISTER.getId()) {
				return OPT_REGISTER.getName();
			} else if (id == OPT_BIND.getId()) {
				return OPT_BIND.getName();
			} else if (id == OPT_SHARE.getId()) {
				return OPT_SHARE.getName();
			} else if (id == OPT_DRAW.getId()) {
				return OPT_DRAW.getName();
			} else if (id == OPT_MODIFY.getId()) {
				return OPT_MODIFY.getName();
			} else if (id == OPT_RETURN.getId()) {
				return OPT_RETURN.getName();
			} else if (id == OPT_USER_GIFT_IMPORT.getId()) {
				return OPT_USER_GIFT_IMPORT.getName();
			} else if (id == OPT_USER_MINUS_IMPORT.getId()) {
				return OPT_USER_MINUS_IMPORT.getName();
			} else if (id == OPT_MONTH_ORDER_MINUS.getId()) {
				return OPT_MONTH_ORDER_MINUS.getName();
			} else if (id == OPT_MONTH_ORDER_ADD.getId()) {
				return OPT_MONTH_ORDER_ADD.getName();
			} else if (id == OPT_INVITE_REGISTER.getId()) {
				return OPT_INVITE_REGISTER.getName();
			} else {
				return null;
			}
		}

		private int id;
		private String code;
		private String name;
		private int optFlag;

		private PointOperateType(final int id, String code, String name, int optFlag) {
			this.id = id;
			this.code = code;
			this.name = name;
			this.optFlag = optFlag;
		}

		/**
		 * @return the id
		 */
		public int getId() {
			return id;
		}

		/**
		 * @return the code
		 */
		public String getCode() {
			return code;
		}

		/**
		 * @return the name
		 */
		public String getName() {
			return name;
		}

		/**
		 * @return the optFlag
		 */
		public int getOptFlag() {
			return optFlag;
		}

	}

	/**
	 * 积分人工操作类型（未用到的已标注）<br>
	 * 
	 * @author xu_cc
	 * @date 创建时间：2017年10月20日 下午5:17:36
	 */
	public enum PointImportOperateType {
		/** 人工赠送(导入) */
		OPT_USER_GIFT(16, "16", "人工赠送"),
		/** 人工核减(导入) */
		OPT_USER_MINUS(17, "17", "人工核减"),
		OPT_MODIFY(14, "14", "积分变更");

		private int id;
		private String code;
		private String name;

		private PointImportOperateType(int id, String code, String name) {
			this.id = id;
			this.code = code;
			this.name = name;
		}

		/**
		 * 根据ID获取名称
		 * 
		 * @Title: getNameById
		 * @Description:(描述)
		 * @param id
		 * @return String
		 * @author xu_cc
		 * @throws Exception
		 *             exception
		 * @Date 创建时间：2017年10月24日 下午3:13:51
		 */
		public static String getNameById(int id) {
			if (id == OPT_USER_GIFT.getId()) {
				return OPT_USER_GIFT.getName();
			} else if (id == OPT_USER_MINUS.getId()) {
				return OPT_USER_MINUS.getName();
			} else {
				return null;
			}
		}

		/**
		 * 根据名称获取Code
		 * 
		 * @param name
		 * @return int
		 * @author xu_cc
		 * @throws Exception
		 *             exception
		 * @Date 创建时间：2017年10月24日 下午3:11:07
		 */
		public static String getCodeByName(String name) {
			if (name.equals(OPT_USER_GIFT.getName())) {
				return OPT_USER_GIFT.getCode();
			} else if (name.equals(OPT_USER_MINUS.getName())) {
				return OPT_USER_MINUS.getCode();
			} else {
				return null;// 未知的操作类型
			}
		}

		/**
		 * 根据名称获取ID
		 * 
		 * @param name
		 * @return int
		 * @author xu_cc
		 * @throws Exception
		 *             exception
		 * @Date 创建时间：2017年10月24日 下午3:11:07
		 */
		public static int getIdByName(String name) {
			if (name.equals(OPT_USER_GIFT.getName())) {
				return OPT_USER_GIFT.getId();
			} else if (name.equals(OPT_USER_MINUS.getName())) {
				return OPT_USER_MINUS.getId();
			} else {
				return -1;// 未知的操作类型
			}
		}

		/**
		 * @return the id
		 */
		public int getId() {
			return id;
		}

		/**
		 * @return the code
		 */
		public String getCode() {
			return code;
		}

		/**
		 * @return the name
		 */
		public String getName() {
			return name;
		}
	}

}
